#include "exceptions.h"

namespace kwdb {

KWDBException::KWDBException(const std::string& message)
    : std::runtime_error(message)
    , errorCode_("") {
}

KWDBException::KWDBException(const std::string& message, const std::exception& cause)
    : std::runtime_error(message + ": " + cause.what())
    , errorCode_("") {
}

const std::string& KWDBException::getErrorCode() const {
    return errorCode_;
}

void KWDBException::setErrorCode(const std::string& errorCode) {
    errorCode_ = errorCode;
}

ConnectionException::ConnectionException(const std::string& message)
    : KWDBException("连接异常: " + message) {
}

ConnectionException::ConnectionException(const std::string& message, const std::exception& cause)
    : KWDBException("连接异常: " + message, cause) {
}

WriteException::WriteException(const std::string& message)
    : KWDBException("写入异常: " + message) {
}

WriteException::WriteException(const std::string& message, const std::exception& cause)
    : KWDBException("写入异常: " + message, cause) {
}

QueryException::QueryException(const std::string& message)
    : KWDBException("查询异常: " + message) {
}

QueryException::QueryException(const std::string& message, const std::exception& cause)
    : KWDBException("查询异常: " + message, cause) {
}

ParseException::ParseException(const std::string& message)
    : KWDBException("解析异常: " + message) {
}

ParseException::ParseException(const std::string& message, const std::exception& cause)
    : KWDBException("解析异常: " + message, cause) {
}

ConfigException::ConfigException(const std::string& message)
    : KWDBException("配置异常: " + message) {
}

ConfigException::ConfigException(const std::string& message, const std::exception& cause)
    : KWDBException("配置异常: " + message, cause) {
}

TimeoutException::TimeoutException(const std::string& message)
    : KWDBException("超时异常: " + message) {
}

TimeoutException::TimeoutException(const std::string& message, const std::exception& cause)
    : KWDBException("超时异常: " + message, cause) {
}

AuthenticationException::AuthenticationException(const std::string& message)
    : KWDBException("认证异常: " + message) {
}

AuthenticationException::AuthenticationException(const std::string& message, const std::exception& cause)
    : KWDBException("认证异常: " + message, cause) {
}

PermissionException::PermissionException(const std::string& message)
    : KWDBException("权限异常: " + message) {
}

PermissionException::PermissionException(const std::string& message, const std::exception& cause)
    : KWDBException("权限异常: " + message, cause) {
}

ResourceException::ResourceException(const std::string& message)
    : KWDBException("资源异常: " + message) {
}

ResourceException::ResourceException(const std::string& message, const std::exception& cause)
    : KWDBException("资源异常: " + message, cause) {
}

} // namespace kwdb
